//
//  UIImage+Extensions.swift
//  weibo
//
//  Created by iobit on 2017/07/05.
//  Copyright © 2017 zhuxu. All rights reserved.
//

import Foundation


extension UIImage {
    
    /// 创建头像图像
    ///
    /// - Parameters:
    ///   - size: 头像尺寸
    ///   - background: 背景颜色
    ///   - lineColor: 头像边界的颜色
    /// - Returns: 剪切后的图像
    func cz_avaterImage(size: CGSize?, background: UIColor = .white,lineColor: UIColor = .lightGray) -> UIImage {
        

        var size = size
        
        if size == nil  {
            size = self.size
        }
        
        let rect = CGRect(origin: CGPoint(), size: size!)
        
        /*
            UIGraphicsBeginImageContextWithOptions(size: CGSize, opaque: Bool, scale: CGFloat)
            图像上下文，内存中开辟一个地址，与屏幕无关
            size: 绘图的尺寸
            opaque: 不透明 false(透明)/true(不透明)
            scale: 屏幕分辨率，默认生成的图像默认使用1.0分辨率，但图像质量不好，可以指定为0，会选择当前设备的屏幕分辨率
         */
        
        UIGraphicsBeginImageContextWithOptions(rect.size, true, 0)
        
        // 背景填充
        background.setFill()
        UIRectFill(rect)
        
        // 实例化一个圆形路径
        let path = UIBezierPath(ovalIn: rect)
        // 进行路径剪切
        path.addClip()
        
        // 绘图 drawInRect 就是在指定区域内拉伸屏幕
        draw(in: rect)
        
        // 绘制内切圆形
        let overPath = UIBezierPath(ovalIn: rect)
        // 边线变粗
        overPath.lineWidth = 2
        lineColor.setStroke()
        overPath.stroke()
        
        // 获取结构
        let result = UIGraphicsGetImageFromCurrentImageContext()
        
        // 关闭上下文
        UIGraphicsEndImageContext()
        
        return result!
        
    }
    
    
}
